﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.GlobalIllumination;

namespace 凌依.工具库.物理检测
{
    public class 物理检测
    {
        public static Collider[] 圆形碰撞检测(Vector3 位置, float 半径)
        {
            return Physics.OverlapSphere(位置, 半径);
        }
       
        public static Collider[] 圆形碰撞检测(Vector3 位置, float 半径, LayerMask 图层)
        {
            return Physics.OverlapSphere(位置, 半径, 图层);
        }
       

        public static Collider[] 盒状碰撞检测(Vector2 中心点, Vector2 长宽, Quaternion 角度)
        {
            return Physics.OverlapBox(中心点, 长宽, 角度);
        }
      
        public static Collider[] 盒状碰撞检测(Vector2 中心点, Vector2 长宽, Quaternion 角度, LayerMask 图层)
        {
            return Physics.OverlapBox(中心点, 长宽, 角度, 图层);
        }



        public static RaycastHit 物理射线(Vector3 原点, Vector3 方向, float 长度)
        {
            RaycastHit a;
            Physics.Raycast(原点, 方向,out a, 长度);
            return a;
        }
        public static RaycastHit 物理射线(Vector2 原点, Vector2 方向, float 长度, LayerMask 图层)
        {
            RaycastHit a;
            Physics.Raycast(原点, 方向,out a, 长度, 图层);
            return a;
        }
    }

    public class 物理检测2D
    {
        public static Collider2D 圆形碰撞检测(Vector2 位置,float 半径)
        {
            return Physics2D.OverlapCircle(位置, 半径);
        }
        public static Collider2D[] 圆形碰撞检测All(Vector2 位置, float 半径)
        {
            return Physics2D.OverlapCircleAll(位置, 半径);
        }
        public static Collider2D 圆形碰撞检测(Vector2 位置, float 半径,LayerMask 图层)
        {
            return Physics2D.OverlapCircle(位置, 半径, 图层);
        }
        public static Collider2D[] 圆形碰撞检测All(Vector2 位置, float 半径, LayerMask 图层)
        {
            return Physics2D.OverlapCircleAll(位置, 半径, 图层);
        }



        public static Collider2D 矩形碰撞检测(Vector2 a坐标,Vector2 b坐标)
        {
            return Physics2D.OverlapArea(a坐标, b坐标);
        }
        public static Collider2D[] 矩形碰撞检测All(Vector2 a坐标, Vector2 b坐标)
        {
            return Physics2D.OverlapAreaAll(a坐标, b坐标);
        }
        public static Collider2D 矩形碰撞检测(Vector2 a坐标, Vector2 b坐标,LayerMask 图层)
        {
            return Physics2D.OverlapArea(a坐标, b坐标,图层);
        }
        public static Collider2D[] 矩形碰撞检测All(Vector2 a坐标, Vector2 b坐标, LayerMask 图层)
        {
            return Physics2D.OverlapAreaAll(a坐标, b坐标, 图层);
        }


        public static Collider2D 盒状碰撞检测(Vector2 中心点, Vector2 长宽,float 角度)
        {
            return Physics2D.OverlapBox(中心点, 长宽, 角度);
        }
        public static Collider2D[] 盒状碰撞检测All(Vector2 中心点, Vector2 长宽, float 角度)
        {
            return Physics2D.OverlapBoxAll(中心点, 长宽, 角度);
        }
        public static Collider2D 盒状碰撞检测(Vector2 中心点, Vector2 长宽, float 角度, LayerMask 图层)
        {
            return Physics2D.OverlapBox(中心点, 长宽, 角度,图层);
        }
        public static Collider2D[] 盒状碰撞检测All(Vector2 中心点, Vector2 长宽,float 角度, LayerMask 图层)
        {
            return Physics2D.OverlapBoxAll(中心点, 长宽,角度, 图层);
        }


        public static RaycastHit2D 物理射线(Vector2 原点,Vector2 方向,float 长度)
        {
           return Physics2D.Raycast(原点, 方向, 长度);
        }
        public static RaycastHit2D 物理射线(Vector2 原点, Vector2 方向, float 长度,LayerMask 图层)
        {
            return Physics2D.Raycast(原点, 方向, 长度,图层);
        }

        //private void OnDrawGizmos()
        //{
        //    Gizmos.DrawWireSphere(中心点.position, 半径);//绘制圆
        //}
    }

}
